package com.violet.common.constant.business;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 类描述：请求响应状态码
 * 错误码为字符串类型，共 5 位，分成两个部分：错误产生来源+四位数字编号
 *
 * @author wqf
 * @date 2021/07/12
 * A 表示错误来源于用户
 * B 表示错误来源于当前系统
 * C 表示错误来源 于第三方服务
 */
@AllArgsConstructor
@Getter
public enum CodeEnum {

    /**
     * 正确执行后的返回
     */
    OK("00000"),
    /**
     * 用户端错误
     */
    CLIENT_ERROR("A0001"),
    /**
     * 验证码过期
     */
    VERIFICATION_CODE_EXPIRED("A0002"),
    /**
     * 参数解析异常
     */
    PARAMETER_PARSE_ERROR("A0003"),
    /**
     * 验证码为空
     */
    VERIFICATION_CODE_EMPTY("A0004"),
    /**
     * 验证那已过期
     */
    VERIFY_HAS_EXPIRED("A0005"),
    /**
     * 验证码错误
     */
    VERIFICATION_CODE_ERROR("A0006"),
    /**
     * 无效请求
     */
    INVALID_REQUEST("A0007"),
    /**
     * 登录信息失效
     */
    LOGIN_INFORMATION_INVALID("A0401"),
    /**
     * 账号或密码错误
     */
    ACCOUNT_PASSWORD_ERROR("A0402"),
    /**
     * 禁止访问/无权访问
     */
    FORBIDDEN("A0403"),
    /**
     * 用户身份未认证
     */
    USER_IDENTITY_NOT_AUTHENTICATED("A0406"),
    /**
     * 系统执行出错
     */
    SYSTEM_EXECUTION_ERROR("B0001"),
    /**
     * 调用第三方服务出错
     */
    ERROR_CALLING_THIRD_PARTY_SERVICE("C0001");

    /**
     * 状态码
     */
    private final String code;
}
